Read Me File For 3D-Filmstrip Version 7.1.2 November 10, 1998 A.) WHAT IS IT? 3D-Filmstrip is a tool that aids in the visualization of mathematical objects and processes. It runs under version 7 or later of the MacOS and requires a PowerPC cpu. 3D-Filmstrip has algorithms for displaying mathematical objects from many different "categories" (plane and space curves, surfaces, conformal maps, polyhedra, ODE, waves) and for displaying various mathematical processes associated with these categories. But 3D-Filmstrip provides content as well as viewing tools: each category has a "Gallery" of many pre-programmed objects, as well as dialogs for entering User Defined obects from the category. The Gallery items are selected from a menu, while the user defined objects are entered by editing algebraic expressions defining an object of the category. Filmstrip was designed and programmed (in Object Pascal) by: Richard S. Palais Department of Mathematics Brandeis University Waltham, MA 02254 palais@math.brandeis.edu Home Page: http://rsp.math.brandeis.edu/ The program is copyrighted, but there is a free license to use it for non-commercial purposes in education and research. B.) WWW and FTP Availability. 3D-Filmstrip has a Home Page on the Web, at the URL: http://rsp.math.brandeis.edu/3D-Filmstrip_html/3D-FilmstripHomePage.html and the latest release and beta versions are available by anonymous ftp at the URL: ftp://rsp.math.brandeis.edu/ (which has a link on the 3D-Filmstrip Home page). The ftp distribution includes documentation in html format. It also includes many "settings" files that illustrate objects and animations of special interest. There are currently four mirror ftp sites for the distribution of 3D-Filmstrip, in Europe, Australia, Taiwan, and Hong Kong. The URL's and site administrators are: ftp://hensel.mathp6.jussieu.fr/dist/3D-Filmstrip/ Dominique Bernardi --- bernardi@math.jussieu.fr ftp://maths.adelaide.edu.au/pure/mmurray/3DFilmstrip http://www.maths.adelaide.edu.au/Pure/mmurray/3DFilmstrip/3D.html Michael Murray --- mmurray@spam.maths.adelaide.edu.au ftp://math.ntu.edu.tw/pub/mac/mirror.rsp Ai Nung Wang --- wang@math.ntu.edu.tw ftp://ftp.math.cuhk.edu.hk/pub/mac/ Law Wai Kuen (Keith) --- keith@math.cuhk.edu.hk ------------ C) Documentation. The documentation for 3D-Filmstrip consists of: 1) This file 2) Hypertext documentation in html format, consisting of: a) 3D-FilmstripHomePage.html b) 3D-Filmstrip_Doc.html (a Table of Contents page) c) IndexPage.html (an Index Page) d) Many pages of html documentation with associated .GIF files. All of the above documentation is included with the standard ftp distribution and in addition there is a link to an online version of the html documentation starting from the 3D-Filmstrip Home Page. Much of the information in the above documentation can also be accessed as Help panels while 3D-Filmstrip is running. These can be selected from the Help menu. ==================================================================== The remainder of this file is a version history, describing what is new in the current version and what was new in earlier versions. Version History What's new in Version 7.1.2 beta of 3D-Filmstrip. November 10, 1998 Added two-sided coloring of surfaces, and several new objects. What's new in Version 7.1 beta of 3D-Filmstrip. September 17, 1998 Bug Fixes, and some new minimal surfaces. Costa-Hoffman-Meeks was added, and Chen-Gackstatter was modified to permit higher dihedral symmetries using a technique due to Hermann Karcher. What's new in Version 7.0 alpha of 3D-Filmstrip. August 1, 1998 Unlike the preceding few versions (in which the user interface changed very little and I added a lot of new content) in this new version, 7.0 Alpha, there is no new content but a fairly drastic change in the UI. The two basic changes are a major reorganization of the menu structures, and a fledgling "toolbar". The major trigger was a recent serious critique of the program by Angel Montesinos. He exercised its features pretty thoroughly, and found a number of bugs, but more importantly made a case that the program interface was getting too complex. After thinking hard about his specific comments, I developed a plan for meeting his objections, and the attached version is the result. Let's take up the toolbar first. Start up the program, create your favorite surface, and then choose "Show Toolbar" from the View menu (if you later want to hide it, choose "Hide Toolbar"). You will see four buttons on the toolbar, and there use should be obvious. The plan is to gradually put more and more controls in this toolbar (e.g., buttons to change the background from black to white and back, to switch between color and stereo, etc.) but I didn't want to go very far in that direction without getting you opinions concerning whether it looks like a useful direction. The basic reasons for the toolbar controls are to make their functions easier to access of course, but perhaps even more importantly to "put them out in the open" rather than hiding them in a menu. (However, anything in the toolbar will also be accessible from the menus too.) By now you will have noticed two things. First, the Main menu has become entirely a menu of Nouns (i.e., the names of all the various surfaces---and in other categories, the names of objects of those categories.) All the Verbs (Create, Show Parallel Surfaces, About This Object..., About This Category...) have been moved into the new Action menu, next to the Main menu. In addition, the Action menu also contains various Category dependent Verbs that used to be in the View menu (e.g., Show All Gridlines, Show Associated Surface). This Action menu is made up on the fly each time it is pulled down, and only contains those items that are appropriate at that moment. This more rigid separation of menus by the logical function of their items is the key to making the program UI less chaotic and easier to understand on the one hand, but also in making the program easier to maintain and less fragile---or so I hope. Personally, I prefer this new menu structure (but that is a pretty biased view since I put a lot of effort into programming it). I am very interested in hearing reactions from other users. What's new in Version 6.6 of 3D-Filmstrip. May 20, 1998 Despite the gap in numbering (and time!), version 6.6 is the next public release of 3D-Filmstrip after version 6.2. There were a number of intervening special purpose versions, but these were not released for general distribution. In the meantime, the program has undergone numerous changes and additions. Unfortunately, the documentation has not kept pace. Like most developers, I find adding new features a lot more interesting than documenting them. I am releasing this version now, before writing all the documentation I should, because the deadline is fast approaching for the Math CDROM that will be distributed this summer at the ICM 98 in Berlin. I will try to make up for the lack of more formal documentation of the changes since version 6.2 with a quick resume here. 1) A great deal of time and effort has gone into testing, to find and eradicate hidden bugs. The program now seems more stable than ever before. I don't know any way to crash it, and I have run this version for many hours without any glitches. However I am very aware that a program as complex as 3D-Filmstrip is bound to have many residual bugs that I have not aroused, but that other users, using the program differently than I do, will come across. PLEASE if you find a problem send me email to palais@math.brandeis.edu telling me if you can the sequence of actions that give rise to the problem. 2) I have reluctantly given up trying to support pre PowerPC Macintoshes. I know there are many excellent 680X0 machines out there, but I have access to very few of the many older models, and I do not like to distribute a version without careful testing. The current 3D-Filmstrip would have been called 3D-Filmstrip(PPC) in the old nomenclature, and 3D-Filmstrip(FPU), the old Fat 3D-Filmstrip, and 3D-Filmstrip(SANE) are no more. 3) There are very many new pre-programmed examples in the various categories. In particular, check out the many new surfaces, and in particular the new minimal surfaces. 4) Holding down the space-bar will now pause the program in all cases where previously a command-period or a mouse-click would have aborted. 5) In the Space Curve Category check out the menu items Show Tangent Developable, Show Repere Mobile, and Show Projection on XXX Plane. (These are best seen in stereo!) 6) Courtesy of Bob Palais, the program now has code to do Fast Fourier Transforms. This has made it possible to add many neat new features to the program. For example, in the Lattice Model Category, in Graphical Display, you will see the kinetic and potential energy in each normal mode in real time as the time evolution proceeds. And in the Wave Category there is now the capability to solve the initial value problem for KdV and Nonlinear Schroedinger (using a pseudospectral method due to Wineberg, McGrath, Gabl, and Scott). Holding down 0ption-Command (or choosing Show Fourier Amplitudes from the menu) will show the frequency spectrum of the solutions. Note that these latter two additions make it possible and easy for anyone to repeat the historic numerical experiments of Fermi=Pasta-Ulam and of Zabusky-Kruskal (see my article, "The Symmetries of Solitons" in the October 1997 Bulletin of the AMS). 7) No program is an island. 3D-Filmstrip now has the capability to export its surfaces to MATLAB and to the ray tracing program POVRay. Also, surfaces created using MATLAB can be exported to 3D-Filmstrip. This is done using an interchange format called Surface Data files. These are created using the item Save Surface Data... in the File menu (or an M-File in MATLAB), and they are read into 3D-Filmstrip using Read Surface Data... (and into MATLAB with another M-File). Christophe Favergeon Borgialli has written a converter program that takes a Surface Data file into a POVRay file. For full details, see the ReadMe files in the three subfolders of the 3dfs Export/Import folder that comes with the standard 3D-Filmstrip distribution. 8) Lots of nice new stuff in the Polyhedron Category. 9) It is now possible to specify user surfaces parametrically using polar spherical or cylindrical coordinates. Also there is a user surface of revolution. Similarly, it is possible to define a user plane curve parametrically in polar coordinates, and a space curve in polar spherical or cylindrical coordinates. =========== What's new in Version 6.2 of 3D-Filmstrip. November 15, 1996 (Version 6.2.2 of December 5, 1996 is a minor maintenace upgrade of Version 6.2. It fixes a bug in several of the "User Defined..." dialogs that prevented them from working properly after the first time. It also fixes a serious bug introduced into the fpu version when I switched to a new compiler.) With this version of 3D-Filmstrip, the user interface has gotten a major facelift. I would like to thank Mike Epstein and Xah Lee for pushing me to make these changes, and working very hard with me in the design and testing of the many new features. There are also important mathematical additions to the program---but most were made by my collaborators, Christopher Anand and Angel Montesinos. Christopher considerably beefed up the Anand-Ward soliton segment of the program, and added User Defined... solitons as well as documentation. I am very pleased with this example of one extreme in the spectrum of applications I had hoped that 3D-Filmstrip would be useful for, namely as a tool in advanced mathematical research. Angel extended his marvelous algorithm for implicitly defined plane curves to also work for implicit space curves, and I needed to make only minor adaptions for his code to work within 3D-Filmstrip. I added routines for displaying geometric objects in the 3-Sphere. They are simply stereographically projected, and then treated like any other object in R^3. In particular you will now find the Hopf fibration in the Space Curve menu, and the Clifford torus in the Surface menu. Here is a list of changes to the user interface: 1) There is a new application icon (Mike Epstein helped with the design). You may have to remake your desktop file to see it. (Have a look with your stereo glasses on). 2) Settings files and Grand Tour files now have their own distinctive icons, and double-clicking will open them (after launching 3D-Filmstrip if it isn't already running). 3) Command-O = Open Settings File Command-S = Save Settings Command-W closes Help Window and dialog windows Command-U opens User Defined... dialogs 4) Cancel buttons have been added to dialogs. 5) Surface rendering now defaults to color. 6) Many changes to the View menu, to make it more intuitive for new users. 7) You can now omit the * for multiplication when writing expressions in User Defined... dialogs (but remember to put in spaces to avoid ambiguity). 8) You can now also use "split definitions" in expressions, giving them different values on different parts of the domains of their variables. The syntax is: case : ; : ; . . . end For example: case x>0: ln(x); x<=0: 1 end (The final ; is optional.) 9) You can now signal a fast abort either with Command-period as before, or by pressing the Escape key. 10) The "Virtual Sphere" button that used to inhabit the lower left hand corner of the screen is gone. That is because the program is now always in Virtual Sphere mode. For example, after drawing a Surface you can immediately click on it and start rotating it. The rotation happens in wireframe by default, but if you put down Caps-lock it happens in patch mode (at reduced resolution). Moreover if, while you are rotating, you hold down the Control key, the cursor changes to four arrows and you can now translate the object in a plane parallel to the screen. If instead you hold down Shift, then the cursor changes to an up-down arrow and you can "zoom" the object toward or away from you. In essence, you can move along an arbitrary path in the Euclidean group, and have the object "follow along". The same thing works in the Plane curve and Conformal map categories, except the default movement is translation instead of rotation. Morever, in these two categories, if you hold down Command and then drag out a rectangle in the usual Mac way, then when you release the mouse (with Command still down) your selection rectangle will zoom to the entire window. 11) There used to be a special version of Virtual Sphere mode in which an object spins about an axis that you could change interactively by rotating it with the mouse. The old way of entering that mode was by putting Caps-lock down before clicking on the Virtual Sphere button, and you stayed in that mode until the Caps-lock key was released. This has now been renamed to Spin mode. You enter it by selecting Spin at the bottom of the Animate menu, and exit it by fast abort (i.e., either Command-period or Escape). For surfaces, the spin will be in wireframe if Caps-lock is up and in Patch mode if it is down. 12) If you are connected to the Internet and have the System Extension Internet Config installed in your Extensions Folder, then you will have two extra items at the bottom of your Balloon Help menu when 3D-Filmstrip is active; namely "Download Latest Version" and "3D-Filmstrip Home Page". Of course, for these to work, you must have available an ftp program (such as Fetch or Anarchie) and a Web Browser (such as Netscape Navigator) and you must have chosen one of each as your preference using the Helper Dialog of the Internet Config program. =========== What's new in Version 6.1 of 3D-Filmstrip. June 1, 1996 1) NEW ABOUT BOX. The clunky old About Box has been replaced by one that is "way cool". 2) SPEED TEST. As the program starts up it does a speed test, and gives the result in the Graphics Window title-bar. The speed is a rather arbitrary number obtained by seeing how fast the cpu can complete a certain mix of operations. It is normalized to come out about one for a Powerbook 180, and a speed of say 5.5 means that a machine completed these operations five and a-half times as fast. The idea is not to establish bragging rights---rather it will be used slow down various processes that would otherwise run too rapidly on very fast cpu's. [ NOTE! The display (but not the speed test was removed in version 6.2.] 3) ADDITIONS TO FILE MENU. There are several changes to the File menu. First two trivial changes: Open... has ben changed to Open Settings... and Save... has been changed to Save Settings... . More important are several new items: a) PRINTING THE GRAPHICS WINDOW. There is a new item, Save Window as PICT file... This is in response to a request from many users to have an easy method to print the contents of the Graphics Window. It seemed like overkill to put in all the code that a real print dialog would entail, so I chose something easier for me and I expect better for the user. Essentially every Macintosh graphics program (and even Simple Text!) can open and print a PICT file. Moreover, by using a graphics program you can do some minor editing before printing (e.g., remove the window controls, add labels, etc.). b) 3D-FILMSTRIP NOW DOES QUICKTIME! There is a new item, Save Animation as Movie... Again, this was suggested by many users and has many advantages (and one drawback). The drawback is that a QuickTime movie can take a fair amount of disk space. (But not as much as I originally feared, several will fit on a 1.4 MByte floppy, and when I learn more about compression I can probably do better.) Two of the advantages that I feel are among the most important are: 1) a movie starts playing almost immediately, whereas to recreate an animation from the Settings on a settings file can take many minutes. 2) a movie can be easily converted (e.g., with MoviePlayer) to a format transportable to UNIX machines or Windows machines (having the QuickTime_for_Windows application). c) PLAYING BACK A QUICKTIME MOVIE. There is also a new item Open Movie... item. This brings up a dialog that will permit you to open any QuickTime movie with a very basic controller. It is not meant as a substitute for MoviePlayer or one of the other many good QT movie editors and players, but rather to give the user a quick way to check a movie just produced using the previous item. When you open a movie there will be a new Movie menu added to the menubar control looping, and decide whether to play at a fixed rate or play every frame. (At the moment you must keep pressing the forward button as long as you want the movie to play.) 4) INITIALIZING MORPHING PARAMETERS. The Set Morphing... dialog has a new button, "Init to current parameters" that will set all the morphing parameters to the current value of the corresponding parameters (i.e., aa0 and aa1 will be set equal to aa, etc., and umin0 and umax0 will be set equal to umin etc.). Again, this was by popular request. 5) MANY NEW FEATURES IN PLANE CURVE AND SPACE CURVE MENUS. I had been working so long improving the Surface category that the two curve categories were beginning to look pretty weak and dull by comparison. They are now a lot more interesting (and fun). a) IMPLICIT PLANE CURVES The program now can handle implicit plane curves (I use a very neat algorithm of Harley Flanders). There are several classic implicit curves in the menu and there also is a User (implicit)... menu item. b) SHOW PARALLEL CURVES There is a Show Parallel Curves... item in the Plane Curve menu. This first draws the normals to the curve from the curve to the "focal point" (i.e., to the the center of the osculating circle). The normals are then erased, but the evolute remains while the parallel curves get drawn in real time animation. The speed of the animation can be changed with the right and left arrow keys, and the direction can be changed witht the up arrow key. c) GENERALIZED CYCLOIDS You can now draw "generalized cycloids" by rolling a circle of any radius on any parametric plane curve. The radius of the rolling circle is the parameter gg, and the sign of gg determines which side of the curve the circle rolls on. The parameter ii determines which point along the radius of the rolling circle draws the "cycloid" (if ii = 0 it is the center of the circle, if ii = 1 it is the point of contact, if ii = -1 it is the point on the rim opposite the contact point, etc.). Finally, if the curve is closed and hh is NOT equal to zero, then the value of gg is"rounded" to the nearest value that makes the length of the circle go evenly into the length of curve (so the cycloid repeats exactly after one time around). If after drawing one cycloid and changing parameters you hold down the shift key as you select Draw Generalized Cycloid, previous cycloids will not be erased before the next one is drawn. d) SHOW OSCULATING CIRCLES After creating a parametric plane curve you can show its osculating circles as a real time animation. The osculating circles are drawn in blue, and the centers leaves behind a trace of the evolute as the circle moves along the curve. (If you hold down the Control key as you select Show Osculating Circles, the radii of the osculating circles are first drawn in red and remain on the screen.) e) SHOW SPACE CURVE AS TUBE The Space Curve menu now has a Show as Tube item. By the way, while I generally prefer to see surface and space curves in stereo, tubes around space curves are an exception, and I find turning on color works best. Parametrizing a tube requires the construction of a framing of the normal bundle, and there are two obvious choices: the Frenet frame and the the parallel frame (obtained by choosing an arbitrary initial frame and using parallel translation in the normal bundle to propogate it along the curve). There are menu choices to switch between these two framings. The radius of the tube is given by the parameter ii. The resolution along the length of the tube is just t Resolution of course, and the resolution around the tube is u Resolution, but is called "Resolution around the tube" in the Set Resolution & Scale... dialog when Show as Tube is checked. By default the resolution around the tube is set at 4 (giving a square cross-section to the tube) since I feel that displays the framing best, but if you prefer round tubes you can set the resolution around the tube as high as 18. 6) SHOW PARALLEL SURFACES. The Surface category was not completely neglected. There is now an item "Show Parallel Surfaces" in the Surface menu (it works only for parametric surfaces for now). It first draws the two focal sets of the surface (corresponding respectively to the smaller and larger principal curvatures) then erases these and shows a real time animation of the parallel surfaces in wireframe. (If you hold down the shift key, you will see the focal surface for as long as it is held down). The speed of the animation can be changed with the right and left arrow keys, and the direction can be changed with the up arrow key. =========== What's new in Version 6.0 of 3D-Filmstrip. February 7, 1996 Major New Features. 1) I spent ten days in Bonn in December working with Hermann Karcher to finish (at least for now) the display of minimal surfaces directly from their Weierstrass data. The material in this portion of the program is by far the richest and most sophisticated numerically, mathematically, and visually. It serves as an ideal that I hope the other mathematical categories in the program will eventually approach. I should stress again that Karcher is almost entirely responsible for the algorithms, and I have served mainly to write these algorithms in Pascal and interface them with the graphical display capabilities already built in to 3D-Filmstrip. I warmly recommend your browsing in this section (the lower part of the Minimal Surface menu). In particular, choose Wavy Enneper, switch to Filmstrip animation, and do a cyclic morph (in stereo vision of course!). 2) There is now a native PowerPC version of the program. I believe that it is dependable, but I have not been able to test it with anywhere near the thoroughness of the versions compiled for the 68K Macs. Since I do not own or have access to a PowerMac on which I can load my debugging and quality assurance software, my ability to test it myself is limited, so I would greatly appreciate it if those of you with PowerMacs would send me reports of any anomalous behavior. By the way, even on the slowest of PowerPC's (a 60 MHz 601) the native version runs about five times as fast as the FPU version runs on the fastest of the 68K Macs (my Quadra 840 AV, which has a 40MHz 68040). Other Changes. 3) Virtual sphere mode now works a little differently. After clicking on the virtual sphere control, you have three seconds to press the mouse button again, to start rotating the object (otherwise you leave virtual sphere mode). After you rotate the object and release the mouse button, the object redraws (unless you press option while releasing the mouse) and then stays in virtual sphere mode for three more seconds, allowing you to rotate further. (During the three second delay, touching Command will drop you out of virtualsphere mode instantly). 4) Now almost any drawing operation that takes more that a few seconds to complete can be aborted with Command Period (holding down the mouse button also usually does it too). 5) If you hold down the Control key while a surface is being drawn, the normal field to the surface will also be shown. In addition there has been the usual complement of bug fixes and minor improvements. =========== What's new in Version 5.3 of 3D-Filmstrip. October 10, 1995 While versions 5.1 and 5.2 mainly improved the infrastructure and user interface of 3D-Filmstrip, this update has concentrated on improving the documentation and adding new mathematics. The items "Pascal Code..." and "Texplanation..." in the main menus have been replaced by two new items, "About this Category...", and "About this Object...". The latter of these is the real replacement for the former two. It is the place to look for the formulas that describe an object, and to see how an object depends on various parameters. Eventually (and gradually) I will add further comments of a descriptive nature to these items. As of now, the latter has been carried out only for the minimal surfaces given by their Weierstrass data, and I have Hermann Karcher to thank for writing the text for these items. For the most part, "About this Category..." is the just the descriptive material about a particular category that used to be under the Help menu. But the really exciting new addition is mathematical. 3D-Filmstrip now is able to create a minimal surface directly from its Weierstrass representation. This is the result of several weeks of concentrated joint effort by Hermann Karcher and myself. The algorithms and the remarkably fast and efficient numerical methods are almost entirely due to Karcher, and my contribution to the collaboration was mainly to interface Karcher's algorithms with the graphical display algorithms that are built into 3D-Filmstrip. Using this technique, it is now possible to show the many new and beautiful examples of minimal surfaces that have been discovered in recent years by Chen-Gackstatter, Costa, Hoffmann, Karcher, Meeks, Rosenberg, Wei, et. al. However, for most of these surfaces, the complete presentation is a multi-step process. They have a number of discrete symmetries, and after a fundamental domain has been created by integrating the Weierstrass data, the rest of the surface must be created by reflecting and rotating this piece. So far we have carried this out for the Riemann, Chen-GackStatter, and Costa surfaces (in wireframe). Eventually, in a later version, it will also be carried out for the remaining pre-programmed Weierstrass-type minimal surfaces, and it will also be possible to view the whole surfaces in patch-mode as well as in wireframe. If you want to see a very pretty animation, go into stereo mode, choose Wavy Enneper from the Minimal Surface submenu of the Surface Menu, choose Filmstrip animation from the Animation type menu, and then choose Cyclic Morph from the Animation menu (it will take a few minutes). =========== What's new in Version 5.2 of 3D-Filmstrip. July 3, 1995 There have been a number of small bug-fixes. In particular, for 3-dimensional ODE, direction fields were not scaling properly, and the Show as Graph item in the Soliton main menu was not working correctly for solutions of the Sine-Gordon equation. (I still have not got it right for the Breather solution). There is now a Set Monitor submenu of the Settings menu. It looks (and works) just like the Monitors Control Panel, but please use this instead, so the program will know immediately about any change you make and take appropriate steps to optimize colors. If you should use the Monitors Control Panel, the program will eventually figure it out. By the way, I've added a new palette, and stereo now works pretty well at the sixteen colors setting, so if memory is low and you want stereo but no colors, try shifting to sixteen colors. Any change made using the Set Monitors menu will be reversed when you quit 3D-Filmstrip. First order ODE in one variable now show direction fields by default. You will notice that now there is a one or two digit number just above the size control box on the lower right of the Graphics Window. This is the maximum number of frames you can have in a Filmstrip with the current window size and monitor setting. If you want more frames, make the window smaller---BUT see the next item. (By the way, if you are using virtual memory, or RAMDoubler, there is no way the program can tell, so if you try using the maximum number of frames, the playback of the Filmstrip will slow to a molasses-like pace as some frames are cached to disk.) There is now a choice of two kinds of animation, the old "filmstrip" type, and a new "real-time". You choose between them using the "Animation Type" submenu of the Animate menu. For real-time animation, which is now the default, each "frame" is created on the fly, as needed. By a little hard work and a few tricks I was able to finally get this working fast enough to be quite acceptable on most recent machines, except that for Surfaces in "patch" mode it is still too slow, so the program shifts temporarily to wire-frame during real-time animation of surfaces. I expect to have a version of 3D-Filmstrip running native on PowerPC Macs within six months, and I am hoping that the speedup will be enough that (perhaps with a little more hard work) even patch surfaces will draw fast enough to work in real-time, and this change is to prepare for that. By the way, the advantage to real-time animation over filmstrip animation is that a filmstrip with more than a few frames requires gobs of RAM. (Also, you don't have to wait while the program makes up the filmstrip.) For ODE in one-variable and first order ODE in two variables, I have implemented the display of direction fields for time-dependent equations. All of the pre-programmed equations are autonomous, so if you want to see this in action choose User Defined..., and either use the default or enter your own time-dependent equation. I have not seen this in other ODE programs, and I would appreciate it if anyone who has would let me know. The Lattice Model category now has a User Defined item, so you can experiment with your very own lattice models. I've found another nice use for the Virtual Sphere algorithm. If you depress the Shift Lock key before clicking on the Virtual Sphere control button (in the lower right of the screen) the program will enter a different version of Virtual Sphere mode. In this version, the rotation axis will be visible, and when you rotate the virtual sphere with the mouse, the 3D object will stay fixed, but the rotation axis will rotate with the sphere. If you release the mouse button, the object will start rotating about the new axis, and continues rotating until you again depress the mouse button and start rotating the axis. You can keep alternating these two phases as long as you like, and then release the shift lock to leave virtual sphere mode. (At this point the object will be redrawn in its final rotated position, and the rotation axis is fixed at its final position.) Needless to say, while this does not require being in stereo mode, it isn't too useful without it. In the six ODE categories, an ODE control panel now opens by default just below the Graphics Window. This has buttons to do more easily things you could do with the menus (Create, Erase, Continue, double or half the scale, and bring up the dialog to set initial conditions, step-size, time-span, and dottedness. In addition there are buttons for single-stepping the ODE forward or backward, and there is a read-out of the current time, position, and velocity. =========== What's new in Version 5.1 of 3D-Filmstrip. May 23, 1995 This is again a substantial update to the program with two major new features. One is very visible and the other, while more hidden, make the program a lot easier to use. 1) The Virtual Sphere algorithm has been implemented. For the Surface, Space Curves, and Polyhedra categories, after an object is selected, a button will appear at the lower left corner of the graphics window. If you click on this button then a circle appears on the screen surrounding the object. The object has now become temporarily embedded in a transparent hard plastic sphere (called the virtual sphere) that is centered at the screen center. The circle you see is the diameter given by intersecting the screen and the virtual sphere. Place the cursor anywhere on the top surface of the virtual sphere and drag the sphere to rotate it, carrying the object along with it. (For speed, a surface will be shown in wire-frame style as you drag it). When you release the mouse, the object will now be drawn in its final position. If you hold down the Control key while in virtual sphere mode, then you will see a little piece of the tangent plane at the point where the virtual sphere is being grabbed---this can help during the time you are learning to use the technique. If you hold down both option and command as you release the mouse button while in virtual sphere mode you will stay in virtual sphere mode and the object will not be redrawn---this allows you to move the mouse to a different point to make it easier to turn the sphere as you wish. 2) The ugly opening dialog for choosing the size of the graphics window and the maximum number of frames in a filmstrip is now a thing of the past. The graphics window is created with a certain aspect ratio, and as large as memory will allow (up to a certain maximum). Moreover it is now resizeable at any time, and any object drawn in it will be rescaled to the new window size. Frames for a filmstrip are created (and destroyed) automatically on as as needed basis. These two changes are a reflection of a major rewriting of the memory management infrastructure of the program. While earlier versions of the program set up all necessary data structures when the program was launched and kept them around until quitting time, in this version larger structures are created when needed and destroyed when the current need for them has passed. This has led to a drastic reduction in the size of the memory partition required to run the program. While earlier versions needed at least a three megabyte partition, version 5.1 can run in as little as 1200 Kilobytes. (The preferred size should be set at 2500 K, or higher if you have a big monitor and like to have large windows.) Also, in the ODE categories, the division of the graphics screen into two panes (the top showing orbits and the bottom orbit projections on the axes) is now under user control. The division of the graphics window into these two panes is adjusted as follows. There is a rectangular button at the right edge of the screen where the two panes meet. If you press on this button, the button itself will disappear and be replaced by a horizontal line. Drag the horizontal line to where you would like the new boundary between panes and release the mouse. (At least twenty percent of the total screen height must be devoted to each pane.) ============= What's new in Version 5.0 of 3D-Filmstrip. March 15, 1995 This is a fairly substantial update. The previous publicly available version (4.6) was made available last October, and in the six months since then I have been working hard to improve the program. (It now runs to over 35,000 lines of Pascal source code.) There has been the usual quota of bug fixes---hopefully not balanced by newly introduced glitches---but in addition two major new features (and many minor ones) have been added. Perhaps the most notable of these is the option to display surfaces and polyhedra in color, using a combination of colored light sources and (in the case of surfaces) surface coloration. The latter is controlled by a submenu menu near the bottom of the Surface menu. This has several items, including a "User Defined..." option that brings up a dialog permitting the user to separately specify the hue, saturation, and brightness of each point on the surface as functions of the two surface parameters u, and v. There are five "light sources", called Source0, Source1, Source2, Source3, and Ambient Source. All five can have their colors set by the user. The light rays of Source0 always travel in the viewing direction (i.e., in the direction from Viewpoint towards ScreenCenter), the light rays from AmbientSource are "omni-directional", while the directions of the light rays of Source1, Source2, and Source3 can be set by the user. For each directional source, its light rays are all parallel to a fixed direction---as if the source were "at infinity". There is a Set Light Sources submenu of the Settings menu to control the nature of the light sources. This has several preset combinations as well as a Custom... item that brings up a dialog for setting the parameters for all of the sources by hand. See the Color item in the Help Menu, or the section on color in the documentation file, for more details, and in particular a discussion of how the surface color and the color and direction of the light sources determine the observed color of each surface patch. I have now switched to Phong shading of surfaces. This means that in addition to diffusely scattered light reflecting off the surface, there is now also a specular (i.e., mirror-like) component that adds highlights and gives a more realistic appearance to surfaces. See the section on Phong shading in the TeX documentation to see how the two parameters, Specular Exponent and Specular Ratio, determine the characteristics of the specular component of reflected light. These two parameters can be changed from their default values using the Custom... dialog of the Set Light Sources submenu. A second major addition is a much richer implementation of ODE's. Whereas earlier versions only had first order ODE's in two and three variables, now there are six separate categories for first and second order systems ODE's in one, two, or three dimensions. Also, the option has been added to see the direction field associated with a first order ODE, and to see the projections of orbits of an ODE on the coordinate axes.In addition to the special Central Force ODE category, I have now added a second special ODE category called Lattice Models. This shows the solutions of the equations of motion for a one dimensional lattice of anharmonic oscillators with nearest neighbor interactions. See the TeX documentation for more details. (This category is still experimental and under development, so I would particularly appreciate comments and suggestions concerning it.) There are four new submenu items in the View menu: "Background", "Visible Gridlines?", "Project ODE Orbits?", and "Show Direction Fields?". Each brings up a two-item submenu: White/Black in the first case and Yes/No in the others. Except for the Conformal Map category, the default background is white and objects are drawn in black (or color). Choosing White from the Background menu will change the background to black, and objects will be drawn in white (or color). This new background will remain chosen until it is either explicitly changed back, or a new category is chosen using the Settings menu Set Category...item. The Visible Gridlines? submenu refers only to the Surface category. Choosing No from the Visible Gridlines? submenu will turn off the display of the u,v coordinate curves when a surface is redrawn (except, of course, in wire-frame display mode!). While this option is available in monochrome, it is rarely advisable in that situation, and should be reserved for (occassional) use when displaying a surface in color. It is also useful in stereo when the specular component of reflected light has been emphasized. (For example, with Specular Exponent set to 60 Specular Ratio equal 0.6, and no gridlines, a surface has the appearance of polished ivory---for best results, set the u and v resolutions high.) The "Project ODE Orbits?", and "Show Direction Fields?" submenus refer only to the ODE category. In any of the ODE categories (except for a first order equation in one variable) the main display shows the evolution of an orbit in the phase space. By default, the program also shows projections of the orbit on the various coordinate axes (using different colors to distinguish the projections). This display occurs in a second pane of the graphics window that opens automatically below the main pane. This pane can be hidden with the Project ODE Orbits? submenu. For a first order ODE category in two variables and a second order ODE in one variable the program by default displays the direction field of the vector field defining the ODE. (If the vector field is time dependent, then it is shown at time zero). The display of the direction field can be turned off with the Show Direction Fields? submenu. There is another new feature of the View menu: choosing an item will by default trigger an immediate redraw of a selected object. By contrast, changing some settings by calling up a dialog using the Settings menu does not cause a redraw until Create is chosen from the Main menu. While these seem to be the default behaviors preferred by the majority of users, some users prefer a delayed redraw with the View menu too---it is a little annoying to have to sit through long redraws if one is making several successive changes with the View menu. So I have implemented an option to inhibit an immediate redraw by holding down the option key while making a choice from the View menu. In fact, this function of the option key has been generalized to also prevent the immeditate drawing of an object in other circumstances when it would otherwise occur. For example, when choosing a new item from the Main menu, hold down the option key if you would like to make several adjustments using the View and Settings menus before the new object gets drawn. The way that the speed of playback of a filmstrip is adjusted has been completely changed. The program controls the playback speed by adding a certain number of "ticks" (i.e., sixtieths of a second) between successive frames. This number can vary between zero, its initial value when the program starts up, to thirty. Note that with thirty ticks between frames, even a machine capable of instantaneously drawing each frame would only display two frames per second. In prior versions, to slow down or speed up the playback (i.e., to add or subtract ticks) it was necessary to stop the playback and then choose Slower Playback or Faster Playback from the Animation menu. These menu items have been removed, and now to change the playback speed while a filmstrip is being played back, press the right-arrow key ( ---> ) to add ticks, or the left arrow key ( <--- ) to subtract ticks. One tick is added or subtracted if the delay between frames is less than ten ticks, and five if greater.) During playback, a "status line" is added to the bottom of the graphics window giving the current number of ticks added between frames. By the way, once this number is set it will remain fixed until quitting time unless it is reset by the user. When a filmstrip is played back and then stopped with a Command Period, Command P will restart it at the same frame (rather than at the beginning as before). If Morph is chosen from the Animation menu when Conformal Map is the current category, then a filmstrip will be created showing a deformation of the selected map from the identity map. Two new item, Show Axes Only and Show Object, have been added to the Aspect menu. While trying to find an optimal aspect, it is often necessary to do some experimentation, and having to wait for a complex object to be drawn slows things down. If Show Axes Only is selected then a mode is entered where only the axes are drawn after each aspect change. Choosing Show Object draws the object and exits this mode. A check mark indicates which mode is currently active. It is now possible to change the range of the surface variables u,v (as well as the values of the various parameters) during the creation of a Morphing filmstrip. This is done by setting the eight variables uMin0, uMin1, uMax0, uMax1, vMin0, vMin1, vMax0, vMax1 in the Set Morphing... dialog. Used judiciously, this can be very useful in determining the structure of a complicated immersed surface. The idea is to keep the parameters fixed and change only the range of one of the variables, from a small strip initially to the whole domain of interest at the end. This will create a movie of the object gradually being created. (Like so many other clever features, including the previous and following ones, this was suggested by Hermann Karcher.) There is a new parameter, Rotation Divisor, that can be set in the Set Number of Frames... dialog. If this is set to an integer n, then a rotation filmstrip with N frames will only rotate 360/Nn degrees between frames (rather than 360/N), so it will only rotate a total of 360/n degrees (instead of 360 degrees). Of course this will produce a sudden jump at the end of each time thru the filmstrip UNLESS the object being displayed is invariant under a 360/n degree rotation about the rotation axis. But if this is the case, then a smooth rotation can be created using many fewer frames. Two menus have moved. The Set Categories... submenu of the Settings menu is gone and has been replaced by a Category menu in the menu bar. (One person told me that they had used 3D-Filmstrip for a whole week before discovering that it could display anything except surfaces!) Since the menu bar was getting overloaded, I have succumbed to Apple's strictures against an application having its own separate Help menu, and, following their recommendation, I have put the items from the old Help menu at the bottom of the Balloon Help menu, at the extreme right of the menu bar. There is a recent addition to the Surface category---or rather to the K=-1 subcategory. The K=-1 menu is now divided in two parts by a separator. The upper part creates surfaces of Gaussian curvature minus one from parametric representations as before, but the lower part starts with a solution of the Sine-Gordon equation, and then integrates the Gauss-Mainardi equations to find the immersed pseudo-spherical surface. If you set stereo viewing on in the View menu, you will first see the curve v=vmin created by integration, and then the curves u=const starting from each of the lattice points in the v=vmin curve.